package com.jinunn.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jinunn.system.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jinunn.system.model.dto.UserAuthInfoDto;
import com.jinunn.system.model.params.UpdatePwdParam;
import com.jinunn.system.model.params.UpdateUserStatusParam;
import com.jinunn.system.model.params.UserParam;
import com.jinunn.system.model.vo.user.UserDetailVo;
import com.jinunn.system.model.vo.user.UserInfoVO;
import com.jinunn.system.model.vo.user.UserPageQuery;
import com.jinunn.system.model.vo.user.UserPageVO;

/**
 * <p>
 * 用户信息表 服务类
 * </p>
 *
 * @author JIN
 * @since 2024-07-10
 */
public interface UserService extends IService<User> {

    /**
     * 新增用户
     *
     * @param userParam 用户表单对象
     * @return boolean
     */
    Boolean saveUser(UserParam userParam);

    /**
     * 根据用户名获取认证信息
     *
     * @param username 用户名
     * @return {@link UserAuthInfoDto}
     */
    UserAuthInfoDto getUserAuthInfo(String username);

    /**
     * 获取登录用户信息
     *
     * @return {@link UserInfoVO}   用户信息
     */
    UserInfoVO getCurrentUserInfo();

    /**
     * 修改用户密码
     *
     * @param param 参数
     * @return boolean
     */
    boolean updatePassword(UpdatePwdParam param);

    /**
     * 修改用户状态
     *
     * @param param 参数
     * @return boolean
     */
    boolean updateUserStatus(UpdateUserStatusParam param);

    /**
     * 删除用户
     *
     * @param id 用户ID
     * @return boolean
     */
    boolean deleteUser(String id);

    /**
     * 获取用户表单数据
     *
     * @param userId 用户id
     * @return 用户信息
     */
    UserDetailVo getUserDetail(Long userId);

    /**
     * 用户分页列表
     *
     * @return page
     */
    IPage<UserPageVO> listPagedUsers(UserPageQuery queryParams);
}
